# 延时加载的元素，我们需要用元素等待去处理
# 元素等待有三种方式
# 显示等待
# 隐式等待
# 强制等待
# 自动化步骤
# 安装 selenium库
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

# 创建驱动对象
driver = webdriver.Edge()
# 打开网页
driver.get("file:///D:/pagetest/注册A.html")
# # 强制等待
# time.sleep(4)
# # 定位到 第一个延时加载的输入框 输入 王大锤
# driver.find_element(By.CSS_SELECTOR,'#userWA').send_keys('王大锤')
#
# # 强制等待
# time.sleep(9)
# # 定位到第二个延时加载的输入框 输入 王心凌
# driver.find_element(By.CSS_SELECTOR, '#userWB').send_keys('王心凌')

# 隐式等待
# 设置一个等待时间，如果在该时间内找不到该元素就会报错
# 设置的等待时间对每一个元素都有效
# driver.implicitly_wait(10)
# # 定位到 第一个延时加载的输入框 输入 王大锤
# driver.find_element(By.CSS_SELECTOR,'#userWA').send_keys('王大锤')
# # 定位到第二个延时加载的输入框 输入 王心凌
# driver.find_element(By.CSS_SELECTOR, '#userWB').send_keys('王心凌')

# 显示等待
# 对需要等待的元素设置等待时间，对单个元素有效
# 显示等待代码太复杂了，我们使用的时候，只需要复制使用
# 然后把元素等待时间和元素代码修改下
# 或者把显示等待时间封装成一个函数，我们调用这个函数来实现

# 用显示等待定位到 第一个延时输入框
# 参数1为等待时间，参数2为每间隔多长时间搜索一次
# ele = WebDriverWait(driver,6,0.1).until(lambda x:x.find_element(By.CSS_SELECTOR,'#userWA'))
# ele.send_keys('王宝强')
#
# ele = WebDriverWait(driver,6,0.1).until(lambda x:x.find_element(By.CSS_SELECTOR,'#userWB'))
# ele.send_keys('王心凌')

def my_wait(value,time=6):
    ele = WebDriverWait(driver, time, 0.1).until(lambda x: x.find_element(By.CSS_SELECTOR, value))
    return ele

a= my_wait('#userWA')
a.send_keys('王大锤')

ele = my_wait('#userWB')
ele.send_keys('王心凌')

# 关闭网页
time.sleep(60)
driver.quit()






























